在正常的狀況下,align-conent 僅能對次軸多行 flex item 做置中,但是當我今天子層物件不確定有多少個時,且有時可能會有單個的情況出現的話,此技巧就能用到了(當然你也能其他解法),既然是多行子物件才能用,那我們就為單個子物件多加兩個兄弟吧,使用 :before 以及 :after 來讓子物件增加到多個,這樣就能使用 flex 的 align-content 屬性來置中囉。
CSS中 Flex 的 align-content 屬性,能針對 flex 物件內的子物件做次軸的對齊設定,其中唯一需要注意的重點就是 align-content 只針對多行子物件這種狀況有效,若是僅有單行子層的話是無效的,所以在這個例子中,為了不增加 HTML TAG 的數量,所以採用了CSS偽類來當作額外添加的首行與末行,這樣我們就可以達到多行子物件的情境了,如此一來也就能讓 align-content 產生作用了。Amos 寫出這個寫法時覺得很有趣,沒想到偽類這樣用也可以,各位覺得呢? ^^
HTML
<div class="box box11">
<div class="content">
立馬來看 Amos 實際完成的
<a href="http://csscoke.com/2015/07/31/nth-child_rwd_album/">
CSS3精美相簿效果
</a>
效果吧!別忘了拖拉一下視窗看看 RWD 效果喔!
</div>
</div>
CSS
.box{
width: 500px;
height: 250px;
border: 1px solid #f00;
margin: auto;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-content: center;
}
.content{
width: 400px;
background: #ccc;
}
.box11:before,
.box11:after{
content: '';
display: block;
width:100%;
}
Line搜尋「@csscoke」加入CSS可樂公開帳號,可以收到 Amos 第一手資訊喔
本文同步發表於 CSS可樂部落格
CSS coke的Youtube直播頻道
歡迎點擊右側訂閱 CSS coke直播頻道
若有任何問題歡迎留言討論喔
謝謝各位
Amos大大你好, 我把範例程式碼 :before, :after 內容都註解掉, 也是維持置中狀態噎
你換到 safari 看看^^
會壞掉XD
好的,它很爭氣的整組壞了了